var configEdit = {	
		init: function(){
			var _host = '',
				isTest = false;
			if(!isTest){
				var arg = {
					_nodeDOM			: 'node-con',
					_configDOM			: 'config-con',								
					_propertiesDOM		: 'properties-con',
					_dialogDom			: 'dialog-con',
					_destAppidDom		: 'destAppid',
					_sourceAppidDom		: 'sourceAppid',
					
					//应用所需JSON地址					
					getNodeListUrl      : '/config/rest/app/list',
					delNodeUrl          : _host+'/config/rest/app/delete',
					addNodeUrl          : _host+'/config/rest/app/add',
					updateNodeUrl       : _host+'/config/rest/app/update',
					pushNodeUrl         : _host+'/config/rest/app/push',
					statusNodeUrl       : _host+'/config/rest/app/status',
					copyAppUrl 			: _host+'/config/rest/app/copy',

					//配置文件所需JSON地址
					getConfigListUrl    : _host+'/config/rest/config/list',
					delConfigUrl        : _host+'/config/rest/config/delete',
					addConfigUrl        : _host+'/config/rest/config/add',
					updateConfigUrl     : _host+'/config/rest/config/update',
					pushConfigUrl       : _host+'/config/rest/config/push',
					statusConfigUrl     : _host+'/config/rest/config/status',

					//属性所需JSON地址
					getPropertiesListUrl: _host+'/config/rest/properties/list',
					delPropertiesUrl    : _host+'/config/rest/properties/delete',
					addPropertiesUrl    : _host+'/config/rest/properties/add',
					updatePropertiesUrl : _host+'/config/rest/properties/update',
					pushPropertiesUrl   : _host+'/config/rest/properties/push',
					statusPropertiesUrl : _host+'/config/rest/properties/status'

				}
			}else{
				var arg = {
					_nodeDOM			: 'node-con',								//节点列表所在DOM
					_configDOM			: 'config-con',								//配置文件列表所在DOM
					_propertiesDOM		: 'properties-con',							//属性列表所在DOM
					_dialogDom			: 'dialog-con',								//复制对话框所在DOM
					_destAppidDom		: 'destAppid',								//目标appid
					_sourceAppidDom		: 'sourceAppid',							//源appid


					//应用所需JSON 地址
					getNodeListUrl 		: '../data/app/list.json',					//获取节点列表URL
					delNodeUrl			: '../data/app/delete.json',				//删除节点URL
					addNodeUrl			: '../data/app/add.json',					//增加节点URL
					updateNodeUrl		: '../data/app/update.json',				//编辑节点URL
					pushNodeUrl			: '../data/app/push.json',					//推送配置文件URL
					statusNodeUrl		: '../data/app/status.json',
					copyAppUrl 			: '../data/app/copy',
					
					//配置文件所需JSON地址
					getConfigListUrl 	: '../data/config/list.json',				//获取配置文件列表URL
					delConfigUrl		: '../data/config/delete.json',				//删除配置文件URL
					addConfigUrl		: '../data/config/add.json',				//增加配置文件URL
					updateConfigUrl		: '../data/config/update.json',				//编辑配置文件URL	
					pushConfigUrl		: '../data/config/push.json',				//推送配置文件URL
					statusConfigUrl		: '../data/config/status.json',	
					
					//属性所需JSON地址
					getPropertiesListUrl: '../data/properties/list.json',			//获取属性列表URL
					delPropertiesUrl	: '../data/properties/delete.json',			//删除属性列表URL
					addPropertiesUrl	: '../data/properties/add.json',			//增加属性列表URL
					updatePropertiesUrl	: '../data/properties/update.json',			//编辑属性列表URL	
					pushPropertiesUrl	: '../data/Properties/push.json',			//推送配置文件URL	
					statusPropertiesUrl	: '../data/properties/status.json'			
				}
			}

		//绑定节点列表事件
		this.bindNodeListEvent(arg);  
		//绑定配置文件列表事件
		this.bindConfigListEvent(arg);
		//绑定属性列表事件
		this.bindPropertiesListEvent(arg);
		//绑定分页事件
		this.bindPageEvent(arg);
		//初始加载节点列表
		this.loadNodeList(arg);
		//初始化对话框
		this.loadDialog(arg);

	}

	/*
		@绑定节点列表事件
		1、打开配置文件列表事件
		2、删除事件[已废弃]
		3、增加事件
		4、编辑事件
		5、推送事件
		6、更改状态事件
	*/
	,bindNodeListEvent: function(arg){
		var _nodeDOM 	= $('#'+arg._nodeDOM),			//节点列表所在的容器
			_configDOM 	= $('#'+arg._configDOM),		//配置文件列表所容器
			_propertiesDOM 	= $('#'+arg._propertiesDOM), //属性列表所在容器
			_dialogDom =   $('#'+arg._dialogDom),
			_destAppidDom = $('#'+arg._destAppidDom),
			_sourceAppidDom = $('#'+arg._sourceAppidDom),
			_tbody 		= _nodeDOM.find('tbody'),	//节点列表所在的tbody
			tmpHtml 	= '';						//临时HTML存储变量
			
		//1、打开配置文件列表事件	
		_tbody.off('click','.open-action');
		_tbody.on('click','.open-action',function(){
			var _this 		= $(this),
				appid 		= _this.attr('app-id'),
				name 		= _this.attr('app-name');
			if(!appid || appid == ''){
				alert('操作失败，请重试');
				return false;
			}
			configEdit.loadConfigList(arg,appid,1,name);	//加载指定节点下的配置文件列表
		});
		
		//2、删除事件	
		_tbody.off('click','.del-action');
		_tbody.on('click','.del-action',function(){
			if(confirm("确认要删除该配置吗，如果删除不可恢复?")){
				var _this 	= $(this);
				var par = {
					appid: _this.attr('app-id')
				};
				if(!par.appid || par.appid == ''){
					alert('操作失败，请重试');
					return false;
				}
				configEdit.loading.show(_nodeDOM);
				$.post(arg.delNodeUrl,par,function(json){
					configEdit.loading.hide(_nodeDOM);
					if(!json || !json.status){
						alert(json.message || '操作失败，请重试');
						return false;
					}
					_this.parents('tr').remove();
					_configDOM.hide();
					_propertiesDOM.hide();
				},'JSON');
			}
		});
		//3、增加事件
		_nodeDOM.off('click','.add-action');
		_nodeDOM.on('click','.add-action',function(){
			var _this 		= $(this),
				nodeText 	= _nodeDOM.find('.add-text');
			var par = {
				name:nodeText.val() || ''
			};
			if($.trim(par.name) == ''){
				alert('请输入节点名称');
				return false;
			}
			configEdit.loading.show(_nodeDOM);	
			$.post(arg.addNodeUrl,par,function(json){
				configEdit.loading.hide(_nodeDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}	
				//成功后清空输入框
				nodeText.val('');			
				configEdit.loadNodeList(arg);
			},'JSON');
		});
		//4、编辑事件
		_tbody.off('blur','.edit-action');
		_tbody.on('blur','.edit-action',function(){
			var _this 	= $(this),
				_value 	= _this.val(),
				_nodeId = _this.attr('app-id'),
				editType = _this.attr('edit-type');
			if($.trim(_value) == '' || !editType || $.trim(editType) == ''){
				return false;
			}
			var parString = '{appid:"'+_nodeId+'",'+editType+':"'+_value+'"}';
			var par = eval("("+parString+")");  
			configEdit.loading.show(_nodeDOM);
			$.post(arg.updateNodeUrl,par,function(json){
				configEdit.loading.hide(_nodeDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}
			},'JSON');
		});		
		//5、推送事件
		_tbody.off('click','.push-action');
		_tbody.on('click','.push-action',function(){
			if(confirm("确认要推送该配置，推送配置后会导致该应用重启?")){
			var _this = $(this);
			var par = {
				appid : _this.attr('app-id') || ''
				};
			if(!par.appid || par.appid == ''){
				alert('操作失败，请重试');
				return false;
			}
			configEdit.loading.show(_nodeDOM);
			$.post(arg.pushNodeUrl,par,function(json){
				configEdit.loading.hide(_nodeDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}
			},'JSON');
				}
		});
		//6、更改状态事件
		_tbody.off('click','.status-action');
		_tbody.on('click','.status-action',function(){
			var _this 	= $(this),
				_nodeId = _this.attr('app-id'),
				_status = _this.attr('status');
			if(!_status && _status != 0){
				return false;
			}
			var par = {
				appid : _nodeId,
				status : _status == 0 ? 1 : 0
			};
			configEdit.loading.show(_nodeDOM);
			$.post(arg.statusNodeUrl,par,function(json){
				configEdit.loading.hide(_nodeDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}
				//更新成功后，DOM进行回显
				_this.attr('status',par.status);
				var _statusTd = _this.parents('tr').find('.status');
				if(par.status == 0){
					_this.html('启用');
					_statusTd.html('<span class="status status-close">已暂停</span>');
				}else{
					_this.html('停用');
					_statusTd.html('<span class="status status-open">已启用</span>');
				}
				
			},'JSON');
		});

		//7、复制属性事件
		_tbody.off('click','.copy-action');
		_tbody.on('click','.copy-action',function(){
				var _this = $(this);
				var par = {
					appid : _this.attr('app-id')
				};
				if(!par.appid || par.appid == ''){
					alert('操作失败，请重试');
					return false;
				}
			_dialogDom.dialog( "open" );
			_destAppidDom.val(par.appid+"2");
			_sourceAppidDom.val(par.appid);
		});
	}
	/*
		@绑定配置文件列表事件
		1、打开属性列表事件
		2、删除事件[已废弃]
		3、增加事件
		4、编辑事件
		5、推送事件
	*/
	,bindConfigListEvent: function(arg){
		var _configDOM 	= $('#'+arg._configDOM),		//配置文件列表所在的容器
			_propertiesDOM 	= $('#'+arg._propertiesDOM), //属性列表所在容器
			_tbody 		= _configDOM.find('tbody'),	//配置文件列表所在的tbody
			tmpHtml 	= '';						//临时HTML存储变量			
		//1、打开属性列表事件	
		_tbody.off('click','.open-action');
		_tbody.on('click','.open-action',function(){
			var _this = $(this),
				appId = _this.attr('app-id'),
				configId = _this.attr('config-id'),
				configName = _this.attr('config-name');
			if(!configId || configId == '' || !configName || configName == ''){
				alert('操作失败，请重试');
				return false;
			}
			configEdit.loadPropertiesList(arg,appId,configId,configName,1);	//加载指定配置文件下的属性列表
		});
		
		//2、删除事件	[已废弃]
		/*
		_tbody.off('click','.del-action');
		_tbody.on('click','.del-action',function(){
			var _this = $(this);
			var par = {
				configid: _this.attr('config-id')
			}
			if(!par.configid || par.configid == ''){
				alert('操作失败，请重试');
				return false;
			}
			configEdit.loading.show(_configDOM);
			$.post(arg.delConfigUrl,par,function(json){
				configEdit.loading.hide(_configDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}
				_this.parents('tr').remove();
				_propertiesDOM.hide();
			},'JSON');
		});
		*/
		//3、增加事件
		_configDOM.off('click','.add-action');
		_configDOM.on('click','.add-action',function(){
			var _this 			= $(this),
				configText 		= _configDOM.find('.add-text');
			var par = {
				appid: _configDOM.attr('app-id'),
				name: configText.val() || ''
			};
			if(!par.appid || par.appid == ''){
				alert('操作失败，请重试');
				return false;
			}
			if(!par.name || par.name == ''){
				alert('请输入配置文件名称');
				return false;
			}
			configEdit.loading.show(_configDOM);
			$.post(arg.addConfigUrl,par,function(json){
			configEdit.loading.hide(_configDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}
				//成功后清空输入框
				configText.val('');				
				configEdit.loadConfigList(arg,par.appid,1);
			},'JSON');
		});
		//4、编辑事件
		_tbody.off('blur','.edit-action');
		_tbody.on('blur','.edit-action',function(){
			var _this 		= $(this),
				_value 		= _this.val(),
				_configId 	= _this.attr('config-id'),
				editType 	= _this.attr('edit-type');
			if($.trim(_value) == '' || !editType || $.trim(editType) == ''){
				return false;
			}
			var parString = '{configid:"'+_configId+'",'+editType+':"'+_value+'"}';
			var par = eval("("+parString+")");
			configEdit.loading.show(_configDOM);
			$.post(arg.updateConfigUrl,par,function(json){
				configEdit.loading.hide(_configDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}
			},'JSON');
		});
		//5、推送事件
		_tbody.off('click','.push-action');
		_tbody.on('click','.push-action',function(){
			var _this = $(this);
			var par = {
				appid : _this.attr('app-id') || '',
				configid : _this.attr('config-id') || ''
				};
			if(!par.appid || par.appid == '' || !par.configid || par.configid == ''){
				alert('操作失败，请重试');
				return false;
			}
			configEdit.loading.show(_configDOM);
			$.post(arg.pushConfigUrl,par,function(json){
				configEdit.loading.hide(_configDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}
			},'JSON');
		});
		//6、更改状态事件
		_tbody.off('click','.status-action');
		_tbody.on('click','.status-action',function(){
			var _this 	= $(this),
				_configId = _this.attr('config-id'),
				_status = _this.attr('status');
			if(!_status && _status != 0){
				return false;
			}
			var par = {
				configid : _configId,
				status : _status == 0 ? 1 : 0
			};
			configEdit.loading.show(_configDOM);
			$.post(arg.statusConfigUrl,par,function(json){
				configEdit.loading.hide(_configDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}
				//更新成功后，DOM进行回显
				_this.attr('status',par.status);
				var _statusTd = _this.parents('tr').find('.status');
				if(par.status == 0){
					_this.html('启用');
					_statusTd.html('<span class="status status-close">已暂停</span>');
				}else{
					_this.html('停用');
					_statusTd.html('<span class="status status-open">已启用</span>');
				}
			},'JSON');
		});
	}
	/*
		@绑定属性列表事件
		1、删除事件
		2、增加事件
		3、编辑事件
		4、推送事件【已废弃】
		5、状态修改事件[已废弃]

	*/
	,bindPropertiesListEvent: function(arg){
		var _propertiesDOM 	= $('#'+arg._propertiesDOM),		//属性列表所在的容器
			_tbody 			= _propertiesDOM.find('tbody'),	//属性列表所在的tbody
			tmpHtml 		= '';							//临时HTML存储变量			
		//1、删除事件
		_tbody.off('click','.del-action');
		_tbody.on('click','.del-action',function(){
			//alert('test')
			var _this = $(this);
			var par = {
				propertiesid: _this.attr('properties-id') || ''
			};
			if(!par.propertiesid || par.propertiesid == ''){
				alert('操作失败，请重试');
				return false;
			}
			configEdit.loading.show(_propertiesDOM);
			$.post(arg.delPropertiesUrl,par,function(json){
				configEdit.loading.hide(_propertiesDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}
				_this.parents('tr').remove();
			},'JSON');
		});
		//2、增加事件
		_propertiesDOM.off('click','.add-action');
		_propertiesDOM.on('click','.add-action',function(){
			var _this 			= $(this),
				keyText 		= _propertiesDOM.find('.key-text'),
				valueText 		= _propertiesDOM.find('.value-text'),
			    descriptionText =_propertiesDOM.find('.value-description');
			var par = {
				appid 		: _propertiesDOM.attr('app-id'),
				configid 	: _propertiesDOM.attr('config-id'),
				key			: keyText.val() || '',
				value		: valueText.val() || '',
				description : descriptionText.val()||''
				};
			if(!par.appid || par.appid == '' || !par.configid || par.configid == ''){
				alert('操作失败，请重试');
				return false;
			}	
			if($.trim(par.key) == '' || $.trim(par.value) == ''|| $.trim(par.description) == ''){
				alert('请输入key与value,description');
				return false;
			}	
			configEdit.loading.show(_propertiesDOM);
			$.post(arg.addPropertiesUrl,par,function(json){
				configEdit.loading.hide(_propertiesDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}				
			//	tmpHtml = configEdit.htmlFactory_properties([json.data]);
			//	_tbody.append(tmpHtml);
			
				//成功后清空输入框
				keyText.val('');
				valueText.val('');
				descriptionText.val('');
				configEdit.loadPropertiesList(arg,par.appid,par.configid,1);
			},'JSON');
		});
		//3、编辑事件
		_tbody.off('blur','.edit-action');
		_tbody.on('blur','.edit-action',function(){
			var _this = $(this),
				_value = _this.val(),
				_propertiesId = _this.attr('properties-id'),
				editType = _this.attr('edit-type');
			if($.trim(_value) == '' || !editType || $.trim(editType) == ''){
				return false;
			}
			var parString = '{propertiesid:"'+_propertiesId+'",'+editType+':"'+_value+'"}';
			var par = eval("("+parString+")");		
			configEdit.loading.show(_propertiesDOM);
			$.post(arg.updatePropertiesUrl,par,function(json){
				configEdit.loading.hide(_propertiesDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}
			},'JSON');
		});
		//4、推送事件【已废弃】
		/*
		_tbody.off('click','.push-action');
		_tbody.on('click','.push-action',function(){
			var _this = $(this);
			var par = {
				appid : _this.attr('app-id') || '',
				configid : _this.attr('config-id') || '',
				propertiesid: _this.attr('properties-id') || ''
				}
			if(!par.appid || par.appid == '' || !par.configid || par.configid == '' || !par.propertiesid || par.propertiesid == ''){
				alert('操作失败，请重试');
				return false;
			}
			configEdit.loading.show(_propertiesDOM);
			$.post(arg.pushPropertiesUrl,par,function(json){
				configEdit.loading.hide(_propertiesDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}
			},'JSON');
		});
		*/
		//5、更改状态事件[已废弃]
		/*
		_tbody.off('click','.status-action');
		_tbody.on('click','.status-action',function(){
			var _this 	= $(this),
				_propertiesId = _this.attr('properties-id'),
				_status = _this.attr('status');
			if(!_status && _status != 0){
				return false;
			}
			var par = {
				propertiesid : _propertiesId,
				status : _status == 0 ? 1 : 0
			};
			configEdit.loading.show(_propertiesDOM);
			$.post(arg.statusPropertiesUrl,par,function(json){
				configEdit.loading.hide(_propertiesDOM);
				if(!json || !json.status){
					alert(json.message || '操作失败，请重试');
					return false;
				}
				//更新成功后，DOM进行回显
				_this.attr('status',par.status);
				var _statusTd = _this.parents('tr').find('.status');
				if(par.status == 0){
					_this.html('启用');
					_statusTd.html('<span class="status status-close">已暂停</span>');
				}else{
					_this.html('停用');
					_statusTd.html('<span class="status status-open">已启用</span>');
				}
			},'JSON');
		});	
		*/
	}
	/*
		@加载节点列表
	*/
	,loadNodeList: function(arg,cPage){

		var _nodeDOM 	= $('#'+arg._nodeDOM),			//节点列表所在的容器
			_tbody 		= _nodeDOM.find('tbody'),	//节点列表所在的tbody
			tmpHtml 	= '';						//临时HTML存储变量
		var par = {
			//curPage : cPage || 1,
			devname :getQueryString("key")
		};
		configEdit.loading.show(_nodeDOM);
		$.post(arg.getNodeListUrl,par,function(json){
			configEdit.loading.hide(_nodeDOM);
			if(!json || json.length == 0){
				console.log('获取节点列表，返回为空');
				return false;
			}
			tmpHtml = configEdit.htmlFactory_node(json.data.sort(function(a,b){return a.appId<b.appId?-1:1}));
			_tbody.html(tmpHtml);
			configEdit.initPage(_nodeDOM.find('.pageArea'),json.page);  //加载分页
			_nodeDOM.show();
			$(arg._configDOM).hide();
			$(arg._propertiesDOM).hide();
		},'JSON');


	}
	,loadDialog:function(arg){
		var _sourceAppId = $('#sourceAppid');
		var _destAppId =$('#destAppid');
		var _copyUrl = arg.copyAppUrl;
		var _dialog = $('#'+arg._dialogDom).dialog({
			autoOpen: false,
			height: 200,
			width: 350,
			modal: true,
			buttons: {
				"submit": function(){
					var par = {
						sourceAppId 		: _sourceAppId.val(),
						destAppId			: _destAppId.val()
					};
					$.post(_copyUrl,par,function(json){
						if(!json || !json.status){
							alert(json.message || '操作失败，请重试');
							return false;
						}
						configEdit.loadNodeList(arg);
					},'JSON');
					_dialog.dialog( "close" );
				},
				Cancel: function() {
					_dialog.dialog( "close" );
				}
			},
			close: function() {

			}
		});
	}
	/*
		@加载指定节点下的配置文件列表
		$appid:当前属性列表所在的应用ID
		$nodeId:当前配置文件列表所在的节点ID
		$cPage:当前页码
		$nodeName:当前配置文件列表所在的节点名称，用于回显名称

	*/
	,loadConfigList: function(arg,appid,cPage,nodeName){
		
		//对必要参数进行为空验证
		if(!appid){
			console.log('加载失败，原因appid='+appid);
			return false;
		}
		var _configDOM 		= $('#'+arg._configDOM),					//配置文件列表所在的容器
			_tbody 			= _configDOM.find('tbody'),					//配置文件列表所在的tbody
			_title 			= _configDOM.find('.config-list-title'), 	//配置文件列表所属的节点称名
			tmpHtml 		= '';										//临时HTML存储变量
		
		//重置DOM属性，为新增、分页事件提供索引
		_configDOM.attr('app-id',appid);
		
		var par ={
			appid	: appid || '',
			curPag	: cPage || 1
		};
		configEdit.loading.show(_configDOM);
		$.post(arg.getConfigListUrl,par,function(json){
			configEdit.loading.hide(_configDOM);
			if(!json || json.length == 0){
				console.log('获取节点列表，返回为空');
				return false;
			}
			tmpHtml = configEdit.htmlFactory_config(json.data);
			_tbody.html(tmpHtml);
			nodeName ? _title.html(nodeName) : '';	//如果名称存在则替换，如不存在，则表示当前为分页或新增操作
			
			//加载分页
			var pageArea = _configDOM.find('.pageArea');
			pageArea.attr('app-id',par.appid);
			configEdit.initPage(pageArea,json.page);
			
			_configDOM.show();
			$(arg._propertiesDOM).hide();
		},'JSON');
	}
	/*
		@加载指定配置文件下的属性列表
		$appid:当前属性列表所在的应用ID
		$configId:当前属性列表所在的配置文件ID
		$cPage:当前页
		$configName:当前属性列表所在的节点名称，用于回显名称
	*/
	,loadPropertiesList: function(arg,appid,configId,cPage,configName){
		 //对必要参数进行为空验证
		if(!appid || !configId){
			console.log('加载失败，原因appid='+appid+';configId='+configId);
			return false;
		}
		var _propertiesDOM 	= $('#'+arg._propertiesDOM),					//属性列表所在的容器
			_tbody 			= _propertiesDOM.find('tbody'),					//属性列表所在的tbody
			_title 			= _propertiesDOM.find('.config-list-title'),	//属性列表所属的配置文件名称
			tmpHtml 		= '';											//临时HTML存储变量
			
		//重置必要属性，为新增、分页事件提供索引
		_propertiesDOM.attr('app-id',appid);
		_propertiesDOM.attr('config-id',configId);
		var par = {
			appid : appid || '',
			configid : configId || '',
			curPag : cPage || 1
		};
		configEdit.loading.show(_propertiesDOM);
		$.post(arg.getPropertiesListUrl,par,function(json){
			configEdit.loading.hide(_propertiesDOM);
			if(!json || json.length == 0){
				console.log('获取节点列表，返回为空');
				return false;
			}
			tmpHtml = configEdit.htmlFactory_properties(json.data);
			_tbody.html(tmpHtml);
			configName ? _title.html(configName) : '';	//如果名称存在则替换，如不存在，则表示当前为分页或新增操
			configEdit.initPage(_propertiesDOM.find('.pageArea'),json.page);  //加载分页
			_propertiesDOM.show();
		},'JSON');
	}
	/*
		@生成Node列表所需的HTML		
	*/
	,htmlFactory_node: function(data){
		var tmpHtml = '',
			statusHtml = '';
		var colorArr = ['#ffbf7f','#ffc184','#ffc489','#ffc68e','#ffc993','#ffcc99','#ffce9e','#ffd1a3','#ffd3a8','#ffd6ad','#ffd8b2','#ffdbb7','#ffddbc','#ffe0c1','#ffe2c6','#ffe5cc','#ffe8d1','#ffead6','#ffeddb','#ffefe0','#fff2e5','#fff4ea','#fff7ef','#fff9f4','#fffcf9'];
		var count = 0;
		for(var i=0; i<data.length; i++){
			statusHtml = data[i].status == 0 ? '<span class="status status-close">已暂停</span>' 
						: '<span class="status status-open">已启用</span>';
			if(i%2 == 0)
			{
				tmpHtml += '<tr style="background-color:'+colorArr[count] +'">'
					+ '<td>'
					+ '<input class="edit-action" style="background-color:'+colorArr[count] +'" edit-type="name" type="text" app-id="'+(data[i].appId || '')+'" value="'
					+ (data[i].name || '')
					+ '"/>'
					+ '</td>'
					+ '<td align="center">'
					+ statusHtml
					+ '</td>'
					+ '<td align="center">'
					+ '<span class="action push-action" app-id="'+(data[i].appId || '')+'">推送</span>'
					+ '<span class="action open-action" app-id="'+(data[i].appId || '')+'" app-name="'+(data[i].name || '')+'">打开</span>'
					+ '<span class="action del-action" app-id="'+(data[i].appId || '')+'">删除</span>'
					+ '<span class="action copy-action" app-id="'+(data[i].appId || '')+'">复制</span>'
				//	+ '<span class="action status-action" app-id="'+(data[i].appId || '')+'" status="'+data[i].status+'">'
				//	+  (data[i].status == 0 ? '启用' : '暂停')
					+ '</span>'
					+ '</td>'
					+ '</tr>';
			}
			else
			{
			tmpHtml += '<tr>'
					+ '<td>'
					+ '<input class="edit-action" edit-type="name" type="text" app-id="'+(data[i].appId || '')+'" value="'
					+ (data[i].name || '')
					+ '"/>'
					+ '</td>'
					+ '<td align="center">'
					+ statusHtml
					+ '</td>'
					+ '<td align="center">'
					+ '<span class="action push-action" app-id="'+(data[i].appId || '')+'">推送</span>'
					+ '<span class="action open-action" app-id="'+(data[i].appId || '')+'" app-name="'+(data[i].name || '')+'">打开</span>'
					+ '<span class="action del-action" app-id="'+(data[i].appId || '')+'">删除</span>'
					+ '<span class="action copy-action" app-id="'+(data[i].appId || '')+'">复制</span>'
				//	+ '<span class="action status-action" app-id="'+(data[i].appId || '')+'" status="'+data[i].status+'">'
				//	+  (data[i].status == 0 ? '启用' : '暂停')
					+ '</span>'
					+ '</td>'
					+ '</tr>';
			}
			count++;
		}
		return tmpHtml;
	}
	/*
		@生成config列表所需的HTML		
	*/
	,htmlFactory_config: function(data){
		var tmpHtml = '',
			statusHtml = '';
	    var colorArr = ['#7fbfff','#84c1ff','#89c4ff','#8ec6ff','#93c9ff','#99ccff','#9eceff','#a3d1ff','#a8d3ff','#add6ff','#b2d8ff','#b7dbff','#bcddff','#c1e0ff','#c6e2ff','#cce5ff','#d1e8ff','#d6eaff','#dbedff','#e0efff','#e5f2ff','#eaf4ff','#eff7ff','#f4f9ff','#f9fcff'];
		var count = 0;
		
		for(var i=0; i<data.length; i++){
			statusHtml = data[i].status == 0 ? '<span class="status status-close">已暂停</span>' 
						: '<span class="status status-open">已启用</span>';
						
			if(i%2 ==0)
			{
				tmpHtml += '<tr style="background-color:'+colorArr[count] +'">'
					+ '<td>'
					+ '<input class="edit-action" style="background-color:'+colorArr[count] +'" edit-type="name" type="text" config-id="'+(data[i].id || '')+'" value="'
					+ (data[i].name || '')
					+ '"/>'
					+ '</td>'
					+ '<td align="center">'
					+ statusHtml
					+ '</td>'
					+ '<td align="center">'
					+ '<span class="action open-action" config-id="'+(data[i].id || '')+'"'
					+ ' app-id="'+(data[i].appId || '')+'"'
					+ ' config-name="'+(data[i].name || '')+'">打开</span>'
				//	+ '<span class="action del-action" config-id="'+(data[i].id || '')+'">删除</span>'
					+ '<span class="action status-action" config-id="'+(data[i].id || '')+'" status="'+data[i].status+'">'
					+  (data[i].status == 0 ? '启用' : '暂停')
					+ '</span>'
					+ '</td>'
					+ '</tr>';
			}
			else
			{
				tmpHtml += '<tr>'
					+ '<td>'
					+ '<input class="edit-action" edit-type="name" type="text" config-id="'+(data[i].id || '')+'" value="'
					+ (data[i].name || '')
					+ '"/>'
					+ '</td>'
					+ '<td align="center">'
					+ statusHtml
					+ '</td>'
					+ '<td align="center">'
					+ '<span class="action open-action" config-id="'+(data[i].id || '')+'"'
					+ ' app-id="'+(data[i].appId || '')+'"'
					+ ' config-name="'+(data[i].name || '')+'">打开</span>'
				//	+ '<span class="action del-action" config-id="'+(data[i].id || '')+'">删除</span>'
					+ '<span class="action status-action" config-id="'+(data[i].id || '')+'" status="'+data[i].status+'">'
					+  (data[i].status == 0 ? '启用' : '暂停')
					+ '</span>'
					+ '</td>'
					+ '</tr>';
			}
			count++;
		}
		return tmpHtml;
	}
	/*
		@生成properties列表所需的HTML		
	*/
	,htmlFactory_properties: function(data){
		var tmpHtml = '';
		//	statusHtml = '';
		var colorArr = ['#ffff7f','#ffff84','#ffff89','#ffff8e','#ffff93','#ffff99','#ffff9e','#ffffa3','#ffffa8','#ffffad','#ffffb2','#ffffb7','#ffffbc','#ffffc1','#ffffc6','#ffffcc','#ffffd1','#ffffd6','#ffffdb','#ffffe0','#ffffe5','#ffffea','#ffffef','#fffff4','#fffff9'];
		var count = 0;
		for(var i=0; i<data.length; i++){
		//	statusHtml = data[i].status == 0 ? '<span class="status status-close">已暂停</span>' 
		//				: '<span class="status status-open">已启用</span>';
			if(i%2 == 0)
			{
				tmpHtml += '<tr style="background-color:'+colorArr[count] +'">'
					+ '<td>'
					+ '<input class="edit-action" style="background-color:'+colorArr[count] +'" edit-type="key" type="text" properties-id="'+(data[i].id || '')+'" value="'
					+ (data[i].key || '')
					+ '"/>'
					+ '</td>'
					+ '<td>'
					+ '<input class="edit-action" edit-type="value" type="text" properties-id="'+(data[i].id || '')+'" value="'
					+ (data[i].value || '')
					+ '"/>'
					+ '</td>'
					+ '<td>'
					+ '<input class="edit-action" edit-type="description" type="text" properties-id="'+(data[i].id || '')+'" value="'
					+ (data[i].description || '')
					+ '"/>'
					+ '</td>'
				/*	
					+ '<td align="center">'
					+ statusHtml
					+ '</td>'
				*/	
					+ '<td align="center">'
					/*
					+ '<span class="action push-action" app-id="'+(data[i].appId || '')+'"'
					+ ' config-id="'+(data[i].configId || '')+'"'
					+ ' properties-id="'+(data[i].id || '')+'">推送</span>'
					*/
					+ '<span class="action del-action" properties-id="'+(data[i].id || '')+'">删除</span>'
				/*
					+ '<span class="action status-action" properties-id="'+(data[i].id || '')+'" status="'+data[i].status+'">'
					+  (data[i].status == 0 ? '启用' : '暂停')
					+ '</span>'
				*/
					+ '</td>'
					+ '</tr>';
			}
			else
			{
				tmpHtml += '<tr>'
					+ '<td>'
					+ '<input class="edit-action" edit-type="key" type="text" properties-id="'+(data[i].id || '')+'" value="'
					+ (data[i].key || '')
					+ '"/>'
					+ '</td>'
					+ '<td>'
					+ '<input class="edit-action" edit-type="value" type="text" properties-id="'+(data[i].id || '')+'" value="'
					+ (data[i].value || '')
					+ '"/>'
					+ '</td>'
					+ '<td>'
					+ '<input class="edit-action" edit-type="description" type="text" properties-id="'+(data[i].id || '')+'" value="'
					+ (data[i].description || '')
					+ '"/>'
					+ '</td>'
				/*	
					+ '<td align="center">'
					+ statusHtml
					+ '</td>'
				*/	
					+ '<td align="center">'
					/*
					+ '<span class="action push-action" app-id="'+(data[i].appId || '')+'"'
					+ ' config-id="'+(data[i].configId || '')+'"'
					+ ' properties-id="'+(data[i].id || '')+'">推送</span>'
					*/
					+ '<span class="action del-action" properties-id="'+(data[i].id || '')+'">删除</span>'
				/*
					+ '<span class="action status-action" properties-id="'+(data[i].id || '')+'" status="'+data[i].status+'">'
					+  (data[i].status == 0 ? '启用' : '暂停')
					+ '</span>'
				*/
					+ '</td>'
					+ '</tr>';
			}
			
					count++;
		}
		return tmpHtml;
	}
	/*
		@绑定分页事件
	*/
	,bindPageEvent: function(arg){		
		var pagination = $('.pageArea');
		pagination.off('click','li');
		pagination.on('click','li',function(){
			var _this = $(this),
				_fatherDOM = _this.parents('.config-list'),//当前父容器
				cPage = _this.attr('cPage');	//分页页码
			if(!cPage || !Number(cPage) || _this.hasClass('disabled')){
				console.log('指向页无法跳转,已停止。原因:1、可能是当前页已处于选中状态; 2、所指向的页不存在');
				return false;
			}
			var fatherId = _fatherDOM.attr('id');
			
			if(fatherId == arg._nodeDOM ){
				configEdit.loadNodeList(arg,cPage);
			}	
			if(fatherId == arg._configDOM ){
				configEdit.loadConfigList(arg,_fatherDOM.attr('app-id'),cPage);
			}
			if(fatherId == arg._propertiesDOM){
				configEdit.loadPropertiesList(arg,_fatherDOM.attr('app-id'),_fatherDOM.attr('config-id'),cPage);
			}	
		});
	}
	/*
		@初始化分页
	*/
	,initPage: function(pageArea,pageJson){
		if(!pageArea || pageArea.length == 0){
			console.log('当前分页区域为空，停止初始化');
			return false;
		}
		var pagination = $(pageArea).find('ul');
		if(pageJson.totalSize == 0){
			console.log('当前数据为空，停止初始化');
			pagination.html('');
			return false;
		}
		
		var cPage = Number(pageJson.curPage),		//当前页
			tPage = Number(pageJson.totalPage),		//总页数
			tHtml = '',								//临时存储分页HTML片段
			lHtml = '';								//临时存储末尾页码THML片段
		//配置首页
		if(cPage > 1 && tPage > 1){
			tHtml += '<li cPage="1">首页</li>'
				  +  '<li cPage="'+(cPage-1)+'">上一页</li>';
		}else{
			tHtml += '<li cPage="1" class="disabled">首页</li>'
				  +  '<li cPage="'+(cPage-1)+'" class="disabled">上一页</li>';				
		}
		var i 	 = 1,		//循环开始数
			maxI = tPage;	//循环结束数
		//配置first端省略符
		if(cPage > 4){
			tHtml += '<li cPage="1">1</li>'
				  +  '<li class="disabled">...</li>';
			i = cPage - 2;
		}
		//配置last端省略符
		if((tPage - cPage) > 4){
			maxI = cPage + 2;
			lHtml += '<li class="disabled">...</li>'
				  +  '<li cPage="'+tPage+'">'+tPage+'</li>';
		}
		// 配置页码
		for(i; i<= maxI;i++){
			if(i == cPage){
				tHtml += '<li class="active">'+cPage+'</li>';
				continue;
			}			
			tHtml += '<li cPage="'+i+'">'+i+'</li>';				
		}			
		tHtml += lHtml;
		//配置下一页与尾页
		if(cPage < tPage){
			tHtml += '<li cPage="'+(cPage+1)+'">下一页</li>'
				  +  '<li cPage="'+tPage+'">尾页</li>';
		}else{
			tHtml += '<li cPage="'+(cPage+1)+'" class="disabled">下一页</li>'
				  +  '<li cPage="'+tPage+'" class="disabled">尾页</li>';
		}
		pagination.html(tHtml);
	}
	/*
		@加载遮罩功能
	*/
	,loading:{
		show: function(dom){
			if(!dom || $(dom).length == 0){
				var dom = 'html';
			}
			var position = $(dom).css('position');
			if(position != 'absolute' && position != 'relative' && position != 'fixed'){
				$(dom).css('position','relative')
			}
			$(dom).append('<div class="loading"></div>');
		},
		hide: function(dom){
			if(!dom || $(dom).length == 0){
				var dom = 'html';
			}
			$(dom).find('.loading').fadeOut(500, function(){
				$(this).remove();
			})
		}
	}
};

$(function(){
	configEdit.init();
});

function getQueryString(name) {
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
	var r = window.location.search.substr(1).match(reg);
	if (r != null) return unescape(r[2]); return null;
}